package demo.topic12.aop;

import org.junit.Test;

import java.io.InputStream;

/**
 * AOP面向切面编程 Aspect Oriented Programming
 * 1. 使用场景
 * （1）权限
 * （2）缓存
 * （3）错误处理
 * （4）调试
 * （5）记录跟踪
 * （6）持久化
 * （7）同步
 * （8）事务
 */
public class AopDemo {

    @Test
    public void aopTest() {
        // 1. 读取配置文件
        InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("bean.properties");

        // 2. 创建Bean的工厂对象
        BeanFactory beanFactory = new BeanFactory(in);

        // 3. 获取代理对象
        ProxyFactoryBean proxyFactoryBean = (ProxyFactoryBean) beanFactory.getBean("bean");
        IManager proxy = (IManager) proxyFactoryBean.getProxy();
        proxy.add("你是狗");
    }

}
